using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FiltronASP.Models.DAO.Interfaces;

namespace FiltronASP.Models.DAO.Extensions
{
    /// <summary>
    /// Klasa zawierajaca rozszerzenia metod zwiazanych z tabela typów pozycji menu.
    /// </summary>
    public static class MenuItemTypeExtensions
    {

        /// <summary>
        /// Metoda pomocnicza konwertujaca liste dostepnych typów pozycji menu z bazy do 
        /// IEnumerable<SelectListItem>.
        /// </summary>
        /// <param name="menuItemTypes">kolekcja typow pozycji menu</param>
        /// <param name="selectedId">id wybranego typu pozycji menu</param>
        /// <returns>liste mozliwa do wrzucenia w drop downa</returns>
        public static IEnumerable<SelectListItem> ToSelectListItems(this IQueryable<MenuItemType> menuItemTypes,
            int? selectedId)
        {
            if (selectedId != null)
            {
                return menuItemTypes.OrderBy(menuItemType => menuItemType.type_name)
                         .Select(menuItemType =>
                             new SelectListItem
                             {
                                 Selected = (menuItemType.type_id == selectedId),
                                 Text = menuItemType.type_name,
                                 Value = menuItemType.type_id.ToString()
                             });
            }   //if not null
            else
            {
                return menuItemTypes.OrderBy(menuItemType => menuItemType.type_name)
                         .Select(menuItemType =>
                             new SelectListItem
                             {
                                 Text = menuItemType.type_name,
                                 Value = menuItemType.type_id.ToString()
                             });
            }   //else not null
        }
   
    }
}
